package com.allwees.bs.module.pms.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.allwees.bs.module.pms.dto.ProductDto;
import com.allwees.bs.module.pms.entity.Product;
import com.allwees.bs.module.pms.req.query.ProductAuditLogQueryReq;
import com.allwees.bs.module.pms.req.query.ProductQueryReq;
import com.allwees.bs.module.pms.vo.OnSaleStatVo;
import com.allwees.bs.module.pms.vo.ProductAuditLogVo;
import com.allwees.bs.module.pms.vo.PublishStatVo;
import com.allwees.bs.module.pms.vo.PutoffStatVo;

import java.util.List;

/**
 * Product操作基础接口
 *
 * @author yangylsky
 * @since 2019-08-21
 */
public interface GeneralProductService extends BaseProductService {
	/**
	 * Product分页查询
	 *
	 * @param page
	 * @param req
	 * @return
	 */
	IPage<ProductDto> page(Page<Product> page, ProductQueryReq req);

	/**
	 * 查询产品审核日志
	 *
	 * @param req
	 * @return
	 */
	List<ProductAuditLogVo> findAuditLog(ProductAuditLogQueryReq req);

	/**
	 * 查询发布商品汇总数量
	 *
	 * @param branchUuid
	 * @return
	 */
	PublishStatVo queryPublishStat(String branchUuid);

	/**
	 * 查询在售商品汇总数量
	 *
	 * @param branchUuid
	 * @return
	 */
	OnSaleStatVo queryOnSaleStat(String branchUuid);

	/**
	 * 查询下架商品汇总数量
	 *
	 * @param branchUuid
	 * @return
	 */
	PutoffStatVo queryPutoffStat(String branchUuid);

	void addCollections(String productUuid);

	void removeCollections(String productUuid);

	void addShares(String productUuid);

	void addSales(String productUuid, int count);

	void addRefunds(String productUuid, int count);

	void addReviews(String productUuid);

	void addViews(String productUuid);

    void refreshDefNo();
}
